package de.revdev.streckenliste.managedbeans;

import de.revdev.streckenliste.beans.PersDaten;
import de.revdev.streckenliste.beans.Revierbuilder;
import de.revdev.streckenliste.beans.exception.RevierVorhandenException;
import de.revdev.streckenliste.dao.RevierDAO;
import de.revdev.streckenliste.entities.Benutzer;
import de.revdev.streckenliste.entities.Revier;
import de.revdev.streckenliste.entities.Revier.RevierArt;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author Nina
 */
@Named(value = "revAnlegenBean")
@RequestScoped
public class RevAnlegenBean implements Serializable {

    @Inject
    private Revierbuilder revBuild;
    @Inject
    private NavigationBean nbean;
    @Inject
    private RevierDAO rdao;
    private String revName;
    private Revier.RevierArt revArt;
    private String amtlNr;
    private String listeNr;
    private Benutzer benutzer;
    @Inject
    private PersDaten persD;

    /**
     * Creates a new instance of RevAnlegenBean
     */
    public RevAnlegenBean() {
    }

    public List<Revier> holeRevier() {
        return revBuild.holeReviere(getBenutzer());
    }

    public String speichern() {
        try {
            revBuild.erstelleRevier(revName, revArt, amtlNr, listeNr, getBenutzer());
        } catch (RevierVorhandenException ex) {
            Logger.getLogger(RevAnlegenBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        nbean.refreshModel();
        return "/faces/user/reviere.xhtml?faces-redirect=true";
    }

    public String loeschen(Revier revier) {
        rdao.remove(revier);
        nbean.refreshModel();
        return "/faces/user/reviere.xhtml?faces-redirect=true";
    }

    private Benutzer getBenutzer() {
        if (benutzer == null) {
            FacesContext fc = FacesContext.getCurrentInstance();
            HttpServletRequest request = (HttpServletRequest) fc.getExternalContext().getRequest();
            benutzer = persD.benutzerVonMail(request.getRemoteUser());
        }
        return benutzer;
    }

    public void setBenutzer(Benutzer benutzer) {
        this.benutzer = benutzer;
    }

    public String getRevName() {
        return revName;
    }

    public void setRevName(String revName) {
        this.revName = revName;
    }

    public RevierArt getRevArt() {
        return revArt;
    }

    public void setRevArt(RevierArt revArt) {
        this.revArt = revArt;
    }

    public String getAmtlNr() {
        return amtlNr;
    }

    public void setAmtlNr(String amtlNr) {
        this.amtlNr = amtlNr;
    }

    public String getListeNr() {
        return listeNr;
    }

    public void setListeNr(String listeNr) {
        this.listeNr = listeNr;
    }

    public NavigationBean getNbean() {
        return nbean;
    }

    public void setNbean(NavigationBean nbean) {
        this.nbean = nbean;
    }
}